package com.example.demo.service;

import com.example.demo.dto.OrderStatisticsDTO;
import com.example.demo.entity.Order;

import org.springframework.data.repository.query.Param;

import java.util.List;

public interface OrderService {

    Order createOrder(int userId, int serviceId, double totalPrice);

    void updateOrderStatusByOrderNo(String orderNo);

    boolean updateOrderStatus(int id, int status);
    //获取订单状态
    int getOrderStatus(String orderNo);

    //获取购买时间
    String getOrderPayTime(String orderNo);

    //订单号生成
    String generateOrderNo();

    //获取服务时长
    double getServiceDuration(int id);

    //获取时间
    String getCurrentTime();

    //获取订单编号
    Order getOrder(String orderNo);

    //判断订单是否支付
    boolean isOrderPaid(String outTradeNo);

    //发起退款请求
    boolean refundOrder(String orderNo);

    // 获取订单统计信息
    OrderStatisticsDTO getOrderStatistics(int userId);

    // 添加订单列表查询方法
    List<Order> getOrderList(
        @Param("userId") int userId,
        @Param("status") Integer status,
        @Param("minAmount") Double minAmount,
        @Param("maxAmount") Double maxAmount,
        @Param("startTime") String startTime,
        @Param("endTime") String endTime,
        @Param("pageNum") int pageNum,
        @Param("pageSize") int pageSize);

    //获取分类的订单列表
    List<Order> getOrders(int userId, Integer status, int pageNum, int pageSize);

    //获取全部订单
    List<Order> getAllOrders(int userId);

    // 添加订单详情查询方法
    Order getOrderById(int orderId);

    //根据服务名搜索订单
    List<Order> searchOrdersByServiceName(int userId, String serviceName);


}
